The background description provided herein is for the purpose of generally presenting the context of the disclosure. Work of the inventors hereof, to the extent the work is described in this background section, as well as aspects of the description that may not otherwise qualify as prior art at the time of filing, are neither expressly nor impliedly admitted as prior art against the present disclosure.
The present disclosure relates generally to data decoding, and more particularly to non-binary iterative decoders for data encoded with a low-density parity check (LDPC) encoder.
LDPC codes may be used for effectively correcting errors in information transmitted in a noisy communications or data storage channel. The information may be encoded (by a LDPC encoder) prior to transmission and then subsequently decoded (by a LDPC decoder) when received. The performance capability of a coding scheme, such as a LDPC coding scheme, is often described by the code's performance curve. The performance curve is a plot of signal-to-noise ratios (SNR) vs. Bit Error Rate (BER), or equivalently Sector Error Rate (SER). LDPC codes are one of the best performing error correcting codes, along with Turbo codes, for use in correcting errors in information transmitted on almost all communication and data storage channels in use.
Traditional LDPC codes may include binary symbols and may be represented by one of many different types of parity check matrices. Traditional LDPC codes may be represented by parity check matrices that include binary symbols. The structure of an LDPC code's parity check matrix may be, for example, random, cyclic, or quasi-cyclic. LDPC codes defined by quasi-cyclic parity check matrices are particularly common and computationally efficient. These codes are known as quasi-cyclic low density parity check (QC-LDPC) codes.
As used herein, the term message refers to a numerical value, known as soft-information. In the case of traditional binary LDPC codes, messages may be represented in a log likelihood ratio (LLR) form. A LDPC decoder (e.g., a flooding decoder) may decode LDPC codes using an iterative message passing algorithm (flooding decoding), such as a min-sum decoding algorithm. Such algorithms may decode a received codeword using an iterative process in which each iteration includes two message computation update steps involving check nodes and variable nodes passing messages to one another. A LDPC decoder (e.g., a layered decoder) may use a layered approach to decoding (layered decoding) to decode LDPC codes. This approach involves messages being iteratively computed, updated, and stored.
LDPC codes and decoders that are used to decode LDPC codes may be used in numerous applications and devices. For example, data storage, satellite communications, wireless communications, wire-line communications, and power-line communications are applications that may each require the use of LDPC codes and LDPC decoders. Devices such as digital camera flash memory storage, satellites, mobile phones, and other mobile devices may also each require the use of LDPC codes and LDPC decoders.
Traditional LDPC codes, that include transmitted binary bits, may not be able to take advantage of information relating groups of several of these bits. For example, the dependency of bit errors that may occur, as a result of transmission of traditional LDPC code bits through a noisy communications or data storage channel may not be easy to determine from log likelihood ratios traditionally computed for each transmitted bit in the code decoding process. As a result, traditional LDPC codes, that include binary bits, and traditional LDPC decoders may not perform as what may be needed for particular applications of LDPC codes and may not be as computationally efficient as what may be needed for particular applications of LDPC codes.